Descrizione |
---|
Questa macro utilizza lo strumento Draft ShapeString per creare una riga di testo posizionata con diversi orientamenti circolari, inclusi circonferenza ed elicoidale (alla maniera di una colonna Traiana). Può anche essere usata per creare un quadrante di orologio con numeri arabi 1, 2, 3, ecc., o numeri romani I, II, III, ecc. Versione macro: 0.22e Ultima modifica: 2024/07/11 Versione FreeCAD: 0.19 è più Download: ToolBar Icon Autore: Mario52 |
Autore |
Mario52 |
Download |
ToolBar Icon |
Link |
Raccolta di macro Come installare le macro Personalizzare la toolbar |
Versione macro |
0.22e |
Data ultima modifica |
2024/07/11 |
Versioni di FreeCAD |
0.19 è più |
Scorciatoia |
Nessuna |
Vedere anche |
Nessuno |
Questa macro utilizza lo strumento Draft Forma da testo per creare una riga di testo posizionata con diversi orientamenti circolari, inclusi circonferenza ed elicoidale alla maniera di una Colonna di Traiano. Può anche essere usata per creare un quadrante di orologio con numeri arabi 1, 2, 3, ecc., o numeri romani I, II, III, ecc. Quest'ultimo utilizzo è stato ispirato dalla discussione del Forum Macro per creare il quadrante dell'orologio del membro della comunità FC, cblt2l.
Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro
# This code is copied instead of the original macro code # to guide the user to the online download page. # Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki # or if the RAW code URL is somewhere else in the wiki. from PySide import QtGui, QtCore diag = QtGui.QMessageBox(QtGui.QMessageBox.Information, "Information", "This macro must be downloaded from this link\n" "\n" "https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/b80bc84eb1f39084a20564cf02c48764906fd6b8/Macro_FCCircularText.FCMacro" + "\n" "\n" "Quit this window to access the download page") diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) diag.setWindowModality(QtCore.Qt.ApplicationModal) diag.exec_() import webbrowser webbrowser.open("https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/b80bc84eb1f39084a20564cf02c48764906fd6b8/Macro_FCCircularText.FCMacro")
Esempio di macro che mostra il testo con un orientamento a 360 gradi
Usare la macro FcString per creare dei caratteri e il file FcClock per creare degli orologi.
Tutti i caratteri sono e rimangono indipendenti. Quando si creano le estrusioni non viene eliminato nulla. Se viene creato un Compound (oggetto Composto) con Run Comp esso viene copiato in una nuova cartella.
Di default le opzioni sono disattivate e si attivano quando si seleziona una delle funzioni:
Fatta eccezione per la casella Z di Placement per Clock che è attiva e che sposta il testo lungo l'asse Z per consentire posizionare il testo sulla superficie di appoggio.
Le opzioni che sono facoltative per la funzione selezionata sono inattive e quindi non utilizzabili.
Panoramica
Dopo il primo utilizzo, è possibile modificare i parametri vedere:
User parameter:BaseApp/Preferences/Macros/FCMmacros/FCCircularText
switchModeTextList
switchFontComBox
setSystemFonts
seTtextAlignement
setFontByDefault
switchResetFALSE
Esempio
false
false
false
true
false
false
true
false
false
true
true
false
Configurare i caratteri in FCCircularText
Scegliere:
Outdoor esterno
Indoor interno
Helix elicoidale
Clock orologio
Mode Stand Outdoor Il testo è disposto verticale, leggibile dall'esterno.
Mode Flat Outdoor Il testo è posizionato orizzontale, leggibile dall'esterno.
Mode Flat Indoor Il testo è orizzontale, leggibile dall'interno.
Mode Stand Indoor Il testo è verticale, leggibile dall'interno.
Questa sezione permette di configurare il comportamento complessivo dei caratteri in tutte le scelte disponibili, ma con qualche variazione. I comandi non utilizzabili con l'opzione scelta sono visualizzati in grigio.
Modo di default. Il testo viene scritto all'esterno della circonferenza del cerchio.
Outdoor
Il testo viene scritto all'interno della circonferenza del cerchio
Indoor
Il testo viene inserito all'esterno di un'elica.
Helix
Le figure sono parte di un cerchio con numeri arabi o romani.
Clock
Axial
Redress
La sezione del titolo cambia e visualizza la lunghezza del filo selezionato.
Se selezioni un filo, un arco, un cerchio, una linea e un bordo, il percorso della sezione è colorato in green e il comando inutilizzato è colorato in red
l'ultimo pulsante di opzione utilizzato viene salvato nel parametro di FreeCAD
Alcuni parametri sono disponibili nei parametri di FreeCAD vedere:Menu → Tools → Edit parameters...
switchModeTextList
:
false
normale modalità di testo (e nero) si trasforma off switchFontComBoxtrue
permettere switchFontComBox 1 (default)switchFontComBox
:
false
(é switchModeTextList = 1) modalità testo (a colori) nell'elenco ComboBox più veloce (predefinito)true
(and switchModeTextList = 1) Famiglia di caratteri nell'elenco ComboBox più lento ma più bello!setSystemFonts
:
false
matplotlib.font_manager.findSystemFonts ("C: /", "ttf") fare tutti i caratteri (in tutte le cartelle e sottocartelle dell'HD) tempo !!true
fontman.findSystemFonts (self.pathFont)seTtextAlignement
: 0 = AlignLeft (default) 1 = AlignCenter 2 = AlignRightsetFontByDefault
: Carattere predefinito (l'ultimo utilizzato)switchResetFALSE
: false
reset (default), true
no reset (non consigliato) alcuni interruttori possono rimanere aperti o chiudersi inaspettatamente!setPathOrthogonal
: true
false
setPathTangent
: true
false
setPositionBase
: true
false
setPositionCenter
: true
false
setPositionTop
: true
false
switchVersionSearch
: true
false
Version
: FCCircularText versioneUsare la macro FcString per creare dei caratteri e il file FcClock per creare degli orologi.
L'icona per il pulsante:
Per maggiori informazioni vedere Personalizzare la barra degli strumenti
Macro_Circular_Text.FCMacro
o tele carica lo script :
- on github Macro_FCCircularText.FCMacro
- o dal forum Extrude from curved surface of cylinder
Testo verticale (in piedi), compreso tra 180 gradi (Begin angle) e 360 gradi (End angle), esterno alla curva.
Testo interno alla curva.
Testo interno e esterno alla curva.
Testo circolare orizzontale (coricato) su un oggetto piano.
Configuration Superior.(click to elarge)
Configuration Inferior.(click to elarge)
Testo estruso, esterno alla curva.
Testo estruso, interno alla curva.
Interno e sottratto.
esterno alla curva.
interno e sottratto.
Estrusione su un cono con Sp. Inclination di 45° sull'asse Z.
Anello, interno alla curva con sottrazione.
Caratteri ruotati di 0°, 90°, ....
Crea l'ellisse di 100x50.
Estruderla di 50 mm.
Discretizzare il perimetro e creare punti con la macro Work Features.
Tab Point > Point 2/3 > Points=Cut (Wire)
Creare il cerchio da 3 punti con la macro Work Features.
Tab Circle Circle=(3 Points)
Creare centro del cerchio con la macro Work Features.
Tab Point > Point 1/3 > Circle(s) center.
Creare le linee di riferimento e configurare FCCircularText.
Crea il testo con Run Comp.
Eliminare il cerchio, i punti e le linee.
Ellisse.
Modalità rilievo:
Selezionare il rettangolo e l'ellisse poi creare un composto
Attivare il modulo Part, poi il menu Part > Crea composto.
Estrudere il composto in Solido.
Selezionare Shape (il testo) e il Composto poi eseguire Cut.
Il testo viene intagliato nella forma dell'ellisse.
Selezionare Ellisse estruso e il Cut (testo) e poi fonderli.
Testo su BoundBox Base (normale)
Testo sul carattere BoundBox Center
Text on BoundBox Top character
Text on selected line:
1: Orthogonal
2: Tangent
Utilizzo esemplificativo (Curved text on a flat surface?)
Note (PS: è possibile che si verifichi un errore tra le versioni. Pubblica il problema sul forum e attendi la correzione aggiornata o il rollback a una versione precedente della macro. Grazie)
È possibile che due caratteri si sovrappongano, qui un piccolo rimedio con Macro_Rotate_To_Point
Character overlap issue and the workaround
(non totalmente sviluppato)
In progetto:
Scrivere un testo circolare posizionato su un oggetto selezionato
see Curved text on a flat surface?
sel = Gui.Selection.getCompleteSelection()
#delete objects
#restore previous selection
Gui.Selection.clearSelection()
for s in sel:
Gui.Selection.addSelection(s.Object,s.SubElementNames)
FreeCAD.ActiveDocument.openTransaction("FCCTc")
for Undo/Redo systemver 16d 2020/09/15 : vedi MasterCATZ commented Sep 14, 2020 message
Elimina il FC 0.18 test sezione:
#### Test FreeCAD.Version simple ############################################################################################################
if int(FreeCAD.Version()[1]) < 18: # Version de FreeCAD
FreeCAD.Console.PrintMessage("This version " + __Title__ + " rmu work with the FreeCAD 0.18 or higher." + "\n\n")
FreeCAD.Console.PrintMessage("For the precedent version see the page " + "\n\n")
FreeCAD.Console.PrintMessage("https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/db47f78f2b20a35137ac213b8d1a62d30f525dcb/Macro_FCCircularText.FCMacro" + "\n\n")
#### Test FreeCAD.Version simple ############################################################################################################
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.20655 (Git)
Build type: Release
Branch: master
Hash: e8e67e8c5ebbc9f9ed9ea67aba5b891969595ece
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
carDegrees = b' \xc2\xb0'.decode("utf-8") #thanks wmayer https://forum.freecadweb.org/viewtopic.php?f=13&t=36380&p=308476#p308357 self.DS_InclinaisonX.setSuffix(carDegrees) self.DS_InclinaisonY.setSuffix(carDegrees) self.DS_InclinaisonZ.setSuffix(carDegrees)
latest testing:
#OS: Windows 10
#Word size of OS: 64-bit
#Word size of FreeCAD: 64-bit
#Version: 0.19.16523 (Git)
#Build type: Release
#Branch: master
#Hash: 9b3ec233c8b21e0df66fada487cd10f471d60cac
#Python version: 3.6.6
#Qt version: 5.6.2
#Coin version: 4.0.0a
#OCC version: 7.3.0
replace the line
for angleTr in range(debut,rotation,((rotation-debut)/nombre)):
to
for angleTrFloat in range((debut*10000),(rotation*10000),int((round(((float(rotation)-float(debut))/float(nombre)),4)*10000)) ): # pour 4 decimales
angleTr = (float(angleTrFloat)/10000)
supp.MakeFace = True
App.activeDocument().recompute()
replace
self.DS_InclinaisonX.setSuffix(" X°")
self.DS_InclinaisonY.setSuffix(" Y°")
self.DS_InclinaisonZ.setSuffix(" Z°")
to
self.DS_InclinaisonX.setSuffix(unicode(" X°"))
self.DS_InclinaisonY.setSuffix(unicode(" Y°"))
self.DS_InclinaisonZ.setSuffix(unicode(" Z°"))
# ver 0.8 10/05/2015 /_ # testing with OS :
##################################################################################################
# OS: Ubuntu 14.04.1 LTS # OS: Ubuntu 14.04.2 LTS
# Platform: 32-bit # Word size of OS: 32-bit
# Version: 0.14.2935 (Git) # Word size of FreeCAD: 32-bit
# Branch: master # Version: 0.16.4928 (Git)
# Hash: eab159b6ee675012bf79de838c206a311e911d85 # Branch: master
# Python version: 2.7.6 # Hash: d8f63bcfd10301f3d1e141cced4370f0782238d0
# Qt version: 4.8.6 # Python version: 2.7.6
# Coin version: 4.0.0a # Qt version: 4.8.6
# SoQt version: 1.6.0a # Coin version: 4.0.0a
# OCC version: 6.7.0 # OCC version: 6.8.0.oce-0.17
##################################################################################################
# OS: Windows Vista # OS: Windows Vista
# Word size of OS: 32-bit # Word size of OS: 32-bit
# Word size of FreeCAD: 32-bit # Word size of FreeCAD: 32-bit
# Version: 0.15.4527 (Git) # Version: 0.15.4671 (Git)
# Branch: master # Branch: releases/FreeCAD-0-15
# Hash: 0da2e4c45a9a259c26abd54c2a35393e1c15696f # Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c
# Python version: 2.7.8 # Python version: 2.7.8
# Qt version: 4.8.6 # Qt version: 4.8.6
# Coin version: 4.0.0a # Coin version: 4.0.0a
# OCC version: 6.7.1 # OCC version: 6.8.0.oce-0.17
##################################################################################################
(2537)
I commenti nella pagina del forum: Extrude from curved surface of cylinder